package busterminal.entity;

import busterminal.entity.service.RouteType;
import java.util.ArrayList;

/**
 * Интерфейс "Маршрут"
 */
public interface Route extends AbstractEntity {

    /**
     * Получить конец маршрута
     * @return конец маршрута
     */
    public StoppingPoint getEndPoint();

    /**
     * Установить конец маршрута
     * @param endPoint конец маршрута
     */
    public void setEndPoint(StoppingPoint endPoint);

    /**
     * Получить список промежуточных остановочных пунктов
     * @return список промежуточных остановочных пунктов
     */
    public ArrayList<StoppingPoint> getIntermediateStoppingPointsList();

    /**
     * Установить список промежуточных остановочных пунктов
     * @param intermediateStoppingPointsList список промежуточных остановочных пунктов
     */
    public void setIntermediateStoppingPointsList(ArrayList<StoppingPoint> intermediateStoppingPointsList);

    /**
     * Получить название маршрута
     * @return название маршрута
     */
    public String getRouteName();

    /**
     * Установить название маршрута
     * @param routeName название маршрута
     */
    public void setRouteName(String routeName);

    /**
     * Получить номер маршрута
     * @return номер маршрута
     */
    public String getRouteNumber();

    /**
     * Установить номер маршрута
     * @param routeNumber номер маршрута
     */
    public void setRouteNumber(String routeNumber);

    /**
     * Получить тип маршрута, определяемый константой из {@link RouteType}
     * @return тип маршрута, определяемый константой из {@link RouteType}
     */
    public RouteType getRouteType();

    /**
     * Установить тип маршрута, определяемый константой из {@link RouteType}
     * @param routeType тип маршрута, определяемый константой из {@link RouteType}
     */
    public void setRouteType(RouteType routeType);

    /**
     * Получить начало маршрута
     * @return начало маршрута
     */
    public StoppingPoint getStartPoint();

    /**
     * Установить начало маршрута
     * @param startPoint начало маршрута
     */
    public void setStartPoint(StoppingPoint startPoint);
    
    /**
     * Получить строку, содержащую список промежуточных остановочных пунктов
     * @return строку, содержащая список промежуточных остановочных пунктов
     */
    public String getIntermediateStoppingPointsString();    
}
